package edu.unc.comp410.colemangeer.model;

/**
 * Class for building legal CatalogItems
 * Something has to know how to do this....CatalogItem implementation is 
 * totally up to us
 */

// CatalogItem business rules and specs as posted on web site:

//specs - this applies more to some  yet-to-be-written CatalogFactory system object,
//but let's just put every Catalog-related rule here for now

/*Catalog

Each item in the Catalog has an CatalogId of type int.

For the first version of our Catalog,
each Product will appear in the Catalog as a singleton
with the Catalog price equal to the Product price and
the CatalogId == ProductId. In the future, not every
Product will necessarily be offered for sale in the Catalog. 
For example, some Products may be discontinued or out of stock.
In the future, the Catalog price for a single Product
may not be identical to the price listed in Product. We may
put items on sale for a cheaper price.

Additional items in the Catalog:
--- CatalogId = 26, name = KyeBooks, products 20-24, price 1000.00
--- CatalogId = 27,name = AllRings, products 10-12, price  110,000.00
--- CatalogId = 28,name = CompleteMiddleEarth, products 13 + AllRings +
            25, price  110,200.00
--- CatalogId = 29,name = MagicalWeapons, products 18 and 25,
		price 400.00

Each Catalog item is either
1) singleton = 1 single product. Example, CatalogIds 1-25.
or
2) bundle = collection of Products (example CatalogIds 26, 27 and 29) or
a collection of Products and other bundles (CatalogId 28).

When a client orders CompleteMiddleEarth (CatalogId 28) they receive
ProductIds 13, 25, 10, 11, and 12. */

//business rules

/*Catalog
--- The price of any singleton in the Catalog does not exceed
its price in Product. A singleton is an item in the Catalog
consisting of a single Product (not a bundle of Products).
In the Catalog we may reduce the price of an individual
Product but we will not increase its price.
--- The price of any bundle in the Catalog is always less than
the sum of the prices of the components of the bundle. 
When several items are bundled together to form a single
item in the Catalog, the price of the bundle is always less
than the price obtained by purchasing the items individually.
--- Every singleton in the Catalog is a Product. However,
it is possible that some Products do not appear in the 
Catalog. For exmple, items temporarily out of stock.
--- A bundle may not contain more than one instance of a
Product. For example, with reference to the specific catalog
you will set up for your project, it would not be legal to
define

   CatalogId = 30, name = Illegal, CompleteMiddleEarth plus
	product 11. Product 11 (Ring of Power - Elf) is already
	a part of the bundle, CompleteMiddleEarth.
*/


public class CatalogItemBuilder {
}
